home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 27 / CU Amiga Magazine's Super CD-ROM 27 (1998)(EMAP Images)(GB)[!][issue 1998-10].iso / CUCD / PowerPC / vbcc / machines / amigawos / libsrc / stdio / _fillbuf.c < prev    next >
C/C++ Source or Header  |  1998-08-02  |  616b  |  24 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int _fillbuf(FILE *f)
  5. {
  6.   _chkabort();
  7.   if(!f) return(EOF);
  8.   if((f->flags&(_READABLE|_WRITE|_EOF|_ERR))!=_READABLE) return(EOF);
  9.   f->flags|=_READ;
  10.   if(!f->bufsize){if(f->flags&_UNBUF) f->bufsize=1; else f->bufsize=BUFSIZ;}
  11.   if(!f->base)
  12.     if(!(f->base=(char *)malloc(f->bufsize+1)+1))
  13.       return(EOF);
  14.   f->pointer=f->base;
  15.   f->count=_read(f->filehandle,f->pointer,(long)f->bufsize);
  16.   if(--f->count<0){
  17.       if(f->count==-1) f->flags|=_EOF;
  18.        else            f->flags|=_ERR;
  19.       f->count=0;
  20.       return(EOF);
  21.   }
  22.   return((unsigned char) *f->pointer++);
  23. }
  24.